DocumentDB বা MongoDB-এর মতো ডকুমেন্ট-ভিত্তিক ডেটাবেসে complex queries ব্যবস্থাপনা করতে হলে, আপনাকে বিভিন্ন কৌশল এবং অপারেটর ব্যবহার করতে হয়। ডেটাবেসের মাধ্যমে জটিল কুয়েরি তৈরি করা এবং পরিচালনা করা অনেক বড় ডেটাসেটের মধ্যে থেকে সঠিক তথ্য বের করার জন্য অত্যন্ত গুরুত্বপূর্ণ। এই কৌশলগুলির মাধ্যমে আপনি ডেটাকে আরও কার্যকরীভাবে অনুসন্ধান করতে পারবেন।
Complex queries হল এমন কুয়েরি যেগুলি একাধিক শর্ত, ফিল্টার, গ্রুপিং, অর্ডারিং, বা একাধিক ক্ষেত্রের উপর ভিত্তি করে তথ্য অনুসন্ধান বা প্রসেসিং করতে ব্যবহৃত হয়। DocumentDB MongoDB Query Language (MQL)-এর সাহায্যে এই ধরনের কুয়েরি পরিচালনা করে।
Complex Queries সাধারণত অন্তর্ভুক্ত করে:
একটি ডেটা কুয়েরি করার সময়, সাধারণত একাধিক শর্তের ওপর ভিত্তি করে ফিল্টার করা হয়। DocumentDB বিভিন্ন logical operators যেমন $and, $or, $gt, $lt, $eq ইত্যাদি ব্যবহার করে একাধিক শর্ত নিয়ে কুয়েরি করতে সাহায্য করে।
একাধিক শর্তে ডকুমেন্ট ফিল্টার করা:
db.users.find({
"$and": [
{ "age": { "$gte": 25 } },
{ "status": "active" }
]
});
এটি সমস্ত ডকুমেন্ট ফিরিয়ে আনবে যেখানে:
"active"
।এছাড়া, $or অপারেটর ব্যবহার করে আপনি একাধিক শর্তের মধ্যে যেকোন একটি শর্ত মেলে এমন ডেটা বের করতে পারেন।
DocumentDB তে aggregation framework ব্যবহৃত হয় যাতে আপনি ডেটা প্রসেস করতে পারেন এবং তার উপর বিভিন্ন অপারেশন চালাতে পারেন যেমন grouping, summing, filtering, এবং sorting। এই ফ্রেমওয়ার্কটি pipelines ব্যবহার করে ডেটা প্রক্রিয়া করতে সাহায্য করে।
একটি aggregation pipeline কুয়েরি:
db.orders.aggregate([
{ "$match": { "status": "completed" } },
{ "$group": { "_id": "$customer_id", "totalSpent": { "$sum": "$amount" } } },
{ "$sort": { "totalSpent": -1 } }
]);
এটি:
কখনও কখনও আপনি পুরো ডকুমেন্টের বদলে কেবল নির্দিষ্ট ফিল্ডগুলো দেখতে চান। এই সময় projection ব্যবহার করে আপনি নির্দিষ্ট ফিল্ডস নির্বাচন করতে পারেন।
কেবল name এবং age ফিল্ড সহ ডেটা খোঁজা:
db.users.find(
{ "status": "active" },
{ "name": 1, "age": 1, "_id": 0 }
);
এটি কেবল name এবং age ফিরিয়ে আনবে এবং _id বাদ দেবে।
একাধিক ফিল্ডের ওপর ভিত্তি করে আপনি $sort অপারেটর ব্যবহার করে ডেটা সাজাতে পারেন। এটি ডেটাবেসে ডেটা দ্রুত সঠিকভাবে সাজানোর জন্য অত্যন্ত কার্যকরী।
age অনুযায়ী সাজানো (অ্যাসেন্ডিং অর্ডারে):
db.users.find({}).sort({ "age": 1 });
এটি ডেটাবেসের age ফিল্ড অনুযায়ী সাজানো ascending অর্ডারে ফলাফল দেবে। আপনি যদি descending সাজাতে চান, তবে -1
ব্যবহার করবেন:
db.users.find({}).sort({ "age": -1 });
MongoDB, এবং এর মাধ্যমে DocumentDB, সরাসরি joins সাপোর্ট করে না, তবে $lookup অপারেটর ব্যবহার করে বিভিন্ন কোলেকশনের মধ্যে ডেটার সংযোগ (join-like operations) করতে পারে।
orders
এবং customers
কোলেকশন থেকে ডেটা নিয়ে আসা:
db.orders.aggregate([
{
"$lookup": {
"from": "customers",
"localField": "customer_id",
"foreignField": "_id",
"as": "customerDetails"
}
}
]);
এটি orders কোলেকশনের customer_id কে customers কোলেকশনের _id
এর সাথে মিলিয়ে customerDetails নামে একটি নতুন ফিল্ডে সম্পর্কিত ডেটা যুক্ত করবে।
ডেটার পরিমাণ অত্যন্ত বড় হলে, আপনি pagination ব্যবহার করতে পারেন, যাতে ডেটা ছোট অংশে ভাগ হয়ে দেখানো যায় এবং পুরো ডেটাবেস একসাথে লোড না হয়।
প্রথম 10টি রেকর্ড নিয়ে আসা:
db.users.find({}).limit(10);
এটি প্রথম 10টি রেকর্ড ফিরিয়ে আনবে।
পেজিনেশন করার জন্য skip এবং limit একসাথে ব্যবহার করা হয়। উদাহরণস্বরূপ, দ্বিতীয় পেজের 10টি রেকর্ড দেখতে:
db.users.find({}).skip(10).limit(10);
এটি দ্বিতীয় পেজের প্রথম 10টি রেকর্ড ফিরিয়ে আনবে।
Complex queries এর কার্যক্ষমতা বাড়ানোর জন্য indexing অত্যন্ত গুরুত্বপূর্ণ। ইন্ডেক্সিং ডেটাবেসের নির্দিষ্ট ফিল্ডে দ্রুত অনুসন্ধান করতে সহায়ক। DocumentDB MongoDB এর মতো single field, compound, এবং geospatial indexes সমর্থন করে।
age
ফিল্ডে একটি ইনডেক্স তৈরি করা:
db.users.createIndex({ "age": 1 });
এটি age
ফিল্ডের উপর একটি ইনডেক্স তৈরি করবে, যা এই ফিল্ডের মাধ্যমে দ্রুত অনুসন্ধান করতে সহায়ক হবে।
DocumentDB তে complex query management হলো ডেটার অনুসন্ধান এবং প্রক্রিয়াকরণে উন্নতি আনার জন্য বিভিন্ন কৌশল ব্যবহার করা। Aggregation pipelines, projection, $lookup, sorting, filtering, এবং indexing এর মাধ্যমে আপনি কার্যকরীভাবে জটিল কুয়েরি তৈরি করতে পারবেন, যা বড় ডেটাসেট থেকে দ্রুত এবং নির্ভরযোগ্য ফলাফল প্রদান করবে।
আরও দেখুন...